package com.seeyon.ctp.rest.resources;


import java.sql.SQLException;
import java.util.Map;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.alibaba.fastjson.JSON;
import com.seeyon.apps.brwh.manager.SupplierCooperationService;
import org.apache.commons.logging.Log;
import com.seeyon.apps.brwh.manager.SrmKanBanDataManager;
import com.seeyon.cap4.form.service.CAP4FormManager;
import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.common.exceptions.BusinessException;
import com.seeyon.ctp.common.log.CtpLogFactory;

/**
 *
 * @author 86155
 * @version 1.0 Create by 2024/7/5 15:44
 */
@Path("/jssdk")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class KanBanDataSrmResources extends BaseResource {

  private static final Log log = CtpLogFactory.getLog(KanBanDataSrmResources.class);

  private CAP4FormManager cap4FormManager = (CAP4FormManager) AppContext.getBean("cap4FormManager");
  private SrmKanBanDataManager srmKanBanDataManager = (SrmKanBanDataManager) AppContext.getBean("srmKanBanDataManager");
  private SupplierCooperationService supplierCooperationService = (SupplierCooperationService) AppContext.getBean("supplierCooperationServiceImpl");

  /**
   * 供应商采购订单TOP
   * @return
   */
  @POST
  @Path("/srm/project/purchaseTop")
  public Response purchaseTop() throws BusinessException, SQLException {
    return this.ok(srmKanBanDataManager.purchaseTop());
  }

  /**
   * 三级品类采购订单金额TOP
   * @return
   */
  @POST
  @Path("/srm/project/ThirdTypePurchaseTop")
  public Response ThirdTypePurchaseTop(Map<String, Object> param) throws BusinessException, SQLException {
    return this.ok(srmKanBanDataManager.thirdTypePurchaseTop(param));
  }

  /**
   * 预警指标
   * @return
   */
  @POST
  @Path("/srm/project/EarlyWarningIndicator")
  public Response EarlyWarningIndicator() throws BusinessException, SQLException {
    return this.ok(srmKanBanDataManager.earlyWarningIndicator());
  }

  /**
   * 不同供应商类型统计
   * @return
   */
  @POST
  @Path("/srm/project/GysList")
  public Response GysList() throws BusinessException, SQLException {
    return this.ok(srmKanBanDataManager.getGYSCount());
  }
  /**
   * 通过POST请求采购模块金额统计数据数据的接口。
   *
   * @param param 请求参数，包含开始时间(startDate)，结束时间(endDate)
   * @return 返回处理结果，包括状态码、数据和消息。
   * @throws Exception 如果处理过程中发生异常。
   */
  @POST
  @Path("srm/purchase/amount/total")
  public Response srmPurchaseAmountTotal(Map<String, Object> param) throws Exception{
    return this.ok(JSON.toJSONString(srmKanBanDataManager.getSrmPurchaseAmountTotal(param)));

  }


  /**
   * 通过POST请求各种品类金额统计数据数据的接口。
   *
   * @return 返回处理结果，包括状态码、数据和消息。
   * @throws Exception 如果处理过程中发生异常。
   */
  @POST
  @Path("srm/sum/category/amount")
  public Response srmSumCategoryAmount(Map<String, Object> param) throws Exception{

    return this.ok(JSON.toJSONString(srmKanBanDataManager.getSrmSumCategoryAmount(param)));

  }



  /**
   * 通过POST取当月1号到今天的采购成本率(采购总金额(不要取消/关闭)/销售总金额(不要作废))
   *
   * @return 返回处理结果，包括状态码、数据和消息。
   * @throws Exception 如果处理过程中发生异常。
   */
  @POST
  @Path("srm/purchase/cost/rate")
  public Response srmPurchaseCostRate() throws Exception{

    return this.ok(JSON.toJSONString(srmKanBanDataManager.getSrmPurchaseCostRate()));

  }

  /**
   * 通过POST获取供应商开发数据的接口。
   *
   * @return 返回处理结果，包括状态码、数据和消息。
   * @throws Exception 如果处理过程中发生异常。
   */
  @POST
  @Path("srm/supplier/develop")
  public Response srmSupplierDevelop() throws Exception{

    return this.ok(JSON.toJSONString(srmKanBanDataManager.getSrmSupplierDevelop()));

  }

  /**
   * 通过POST获取供应商认证数据的接口。
   *
   * @return 返回处理结果，包括状态码、数据和消息。
   * @throws Exception 如果处理过程中发生异常。
   */
  @POST
  @Path("srm/supplier/certification")
  public Response srmSupplierCertification() throws Exception{

    return this.ok(JSON.toJSONString(srmKanBanDataManager.getSrmSupplierCertification()));

  }

  /**
   * 通过POST获取采购专员工作状态（统计未结束数量）
   * 合同--采购合同档案--合同履约状态为未结束--根据后端执行人分类合计数据条数
   * 订单--采购订单档案--订单完成状态为未结束--根据填报人分类合计数据条数
   *
   * @return 返回处理结果，包括状态码、数据和消息。
   * @throws Exception 如果处理过程中发生异常。
   */
  @POST
  @Path("srm/purchase/work/status")
  public Response srmPurchaseWorkStatus() throws Exception{

    return this.ok(JSON.toJSONString(srmKanBanDataManager.getSrmPurchaseWorkStatus()));

  }

}
